package cn.tedu.array;

import java.util.Arrays;

public class ArrayDemo2 {
    public static void main(String[] args) {
        //数组反转
//        int[] arr = {3,15,20,36,88};
        /*for (int i = arr.length-1; i >=0 ; i--) {
            System.out.println(arr[i]);
        }*/
//        for (int i = 0; i < arr.length; i++) {
//            //i=0    arr.length-1
//            //i=1    arr.length-1-i
//            //i=2    arr.length-1-i
//            System.out.println(arr[arr.length-1-i]);
//        }
//        System.out.println(Arrays.toString(arr));
        //改变数组本身
//        int[] arr = {3,15,20,36,88,99};//{3,15,20,36,88}
//        for (int i = 0; i <arr.length/2 ; i++) {
//            //i=0  arr[0]  arr[arr.length-1]
//            //i=1  arr[1]  arr[arr.length-1-i]
//            //定义第三个变量
//            int temp = arr[i];
//            arr[i] = arr[arr.length-1-i];
//            arr[arr.length-1-i] = temp;
//        }
//        System.out.println(Arrays.toString(arr));
        //通过两个变量来控制
//        for (int start=0,end=arr.length-1;start<end; start++,end--) {
//            //arr[start] arr[end]
//            int temp = arr[start];
//            arr[start] = arr[end];
//            arr[end] = temp;
//        }
//        System.out.println(Arrays.toString(arr));

        //借助于新的数组
//        int[] arr = {3,15,20,36,88,99};
//        int length = arr.length;
//        int[] newarr = new int[length];
//        for (int i = 0; i < length; i++) {
////            newarr[0] = arr[length-1];
////            newarr[1] = arr[length-1-1];
////            newarr[2] = arr[length-1-2];
//            newarr[i] = arr[length-1-i];
//        }
//        arr = newarr;
//        System.out.println(Arrays.toString(arr));

//        int[] arr = {11,5,3,12,10};
//        //从小到大{3,5,10,11,12}
//        //冒泡排序
//        for (int i = 1; i <=arr.length-1; i++) {//轮数
//            //第i轮 i=2
//            for (int j = 0; j <=arr.length-1-i ; j++) {//前一个元素的下标
//                //arr[j] arr[j+1]
//                if(arr[j]>arr[j+1]){//arr[0]>arr[1]
//                    //交换
//                    int temp = arr[j];
//                    arr[j] = arr[j+1];
//                    arr[j+1] = temp;
//                }
//            }
//        }
//        System.out.println(Arrays.toString(arr));

//        int[] arr = {11,5,3,12,10};
//        //选择排序
//        //外层循环表示轮数 1-长度-1
//        for (int i = 1; i <=arr.length-1 ; i++) {
//            //第i轮 j表示要比较的第二个数的下标
//            for (int j = i; j<=arr.length-1; j++) {
//                //arr[i-1]和arr[j]进行比较
//                if(arr[i-1]>arr[j]){
//                    //前边元素值大 交换位置
//                    int temp = arr[i-1];
//                    arr[i-1] = arr[j];
//                    arr[j] = temp;
//                }
//            }
//        }
//        System.out.println(Arrays.toString(arr));

        //从大到小
//        int[] arr = {11,5,3,12,10};
        //选择排序
        //外层循环表示轮数 1-长度-1
//        for (int i = 1; i <=arr.length-1 ; i++) {
//            //第i轮 j表示要比较的第二个数的下标
//            for (int j = i; j<=arr.length-1; j++) {
//                //arr[i-1]和arr[j]进行比较
//                if(arr[i-1]<arr[j]){
//                    //前边元素值大 交换位置
//                    int temp = arr[i-1];
//                    arr[i-1] = arr[j];
//                    arr[j] = temp;
//                }
//            }
//        }
//        System.out.println(Arrays.toString(arr));

//        int[] arr = {11,5,3,12,10};
//        //选择排序优化
//        //轮数不变
//        for (int i = 1; i <=arr.length-1 ; i++) {
//            //定义index变量  存储本轮要归位元素的下标值
//            int index = i-1;
//            //遍历要比较的第二个元素 j表示该下标
//            for (int j = i; j <=arr.length-1 ; j++) {
//                //如果当前元素比第二个元素大  则将第二个元素的下标赋值给index
//                if(arr[index]>arr[j]){
//                    index = j;
//                }
//            }
//            //判断是否需要交换位置
//            if(index != (i-1)){
//                //交换元素
//                int temp = arr[index];
//                arr[index] = arr[i-1];
//                arr[i-1] = temp;
//            }
//        }
//        System.out.println(Arrays.toString(arr));

//        int[] arr = {11,5,3,12,10};
//        Arrays.sort(arr);
//        System.out.println(Arrays.toString(arr));

        //数组扩容
//        int[] ages = {18,21,25};
//        int[] ages1 = new int[5];
//        for (int i = 0; i <=ages.length-2 ; i++) {
//            ages1[i+1] = ages[i];
//        }
//        ages = ages1;
//        ages[3] = 28;
//        System.out.println(Arrays.toString(ages));

//        int[] ages = {18,21,25};
//        //准备新数组
//        int[] ages1 = new int[ages.length*2];
//        //System arraycopy方法
////        System.arraycopy(ages,0,ages1,0,3);
//        System.arraycopy(ages,0,ages1,1,2);
//        System.out.println(Arrays.toString(ages1));
//        //拷贝ages中的前两个元素到ages1 ages1要求从第二个元素开始存放
        //Arrays.copyOf
        int[] ages = {18,21,25};
        ages = Arrays.copyOf(ages,ages.length/2);
        System.out.println(Arrays.toString(ages));
    }
}
